shadow dom vs virtual dom